Skip to content

#1885 fix: run every pending migration in version order and record it - #1886

Merged
kRHYME7 merged 10 commits into
HyDE-Project:devfrom
RAprogramm:1885
Jul 30, 2026
Merged

#1885 fix: run every pending migration in version order and record it#1886
kRHYME7 merged 10 commits into
HyDE-Project:devfrom
RAprogramm:1885

Conversation

@RAprogramm

@RAprogramm RAprogramm commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Closes #1885

Problem

The installer ran exactly one migration — the lexicographically highest filename — and kept no record of what had been applied. Three consequences:

  • Scripts/migrations/ holds v25.8.2.sh, v25.9.1.sh, v26.4.3.sh, v26.7.4.sh, and only the last one ever executed, so anyone skipping a release never got the ones in between.
  • sort -r is lexicographic, so v26.10.1 would have sorted below v26.4.3 and the newest migration would have been the one skipped.
  • With no record of applied migrations, adding v26.8.x.sh retires v26.7.4.sh for everyone — including users who have not upgraded yet and still need it to stop the superseded shell helpers from shadowing their replacements.

Change

The runner moved out of install.sh into run_pending_migrations in Scripts/global_fn.sh, which takes the migration directory and a record file. It runs every migration absent from that record, ordered with sort -V, and appends a name only after that migration exits zero. A failure stays a warning, as before, but is not recorded, so it is retried on the next run.

The record lives at ${XDG_STATE_HOME}/hyde/migration/applied.

Existing migrations are all safe to re-run — three only print notices or reload state, and v26.7.4.sh skips any file whose backup already exists — so an installed base with no record simply replays them once.

Tests

tests/test_migrations.sh (new) covers version ordering with v26.10.1 after v26.4.3, recording of successes, a non-zero migration staying unrecorded, no re-run on a second pass, and silence on a missing directory.

Full suite: 9 cases, 0 failed.

Summary by CodeRabbit

  • New Features

    • Added migration documentation for the Lua-based configuration.
    • Install now applies all pending migrations in version order, tracking progress persistently and retrying failures.
  • Bug Fixes

    • Improved theme switching across Waybar, HyDE, and Dolphin wallpaper workflows.
    • Fixed Fish deployment for the Hyprland Lua configuration and improved the Hyprland config editor.
    • Resolved system monitor console-terminal behavior.
    • Corrected keybinding documentation and README link resolution.
  • Tests

    • Expanded migration tests to verify ordering, persistence, retries, and added validation that migration scripts are sh-compatible.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Migration installation now processes every unapplied migration in version order, persists successful executions, retries failures, and uses an XDG state file. Tests cover ordering, retries, state recording, reruns, installer integration, and shell compatibility.

Changes

Migration tracking

Layer / File(s) Summary
Pending migration runner
Scripts/global_fn.sh
run_pending_migrations executes unrecorded migrations in order, records successes, retries failures, isolates stdin, and reports pending work accurately.
Installer integration and release notes
Scripts/install.sh, CHANGELOG.md
The installer passes a persistent XDG-based state file to the migration runner, while the changelog records migration and documentation updates.
Migration behavior and shell compatibility validation
tests/test_migrations.sh, Scripts/migrations/*
Tests verify ordering, state recording, retries, installer invocation, missing-directory behavior, and sh-compatible migration shebangs.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Installer as Scripts/install.sh
  participant Runner as run_pending_migrations
  participant Migrations as Migration scripts
  participant State as Migration state file
  Installer->>Runner: provide migration directory and state path
  Runner->>Migrations: execute pending scripts in version order
  Migrations-->>Runner: return success or failure
  Runner->>State: record successful filenames
Loading

Possibly related PRs

Suggested reviewers: krhyme7

Poem

I hop through versions, one by one,
Recording each migration done.
Failed steps wait for another try,
While ordered scripts go marching by.
A state file guards the trail—
Squeak, success! No steps shall fail.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main fix: applying all pending migrations in version order and tracking applied ones.
Linked Issues check ✅ Passed The PR matches #1885 by running all unapplied migrations in order, recording successes, retrying failures, and handling the shipped migrations.
Out of Scope Changes check ✅ Passed The added changelog, tests, and sh-compatible migration shebang updates support the migration fix and do not appear unrelated.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Scripts/global_fn.sh`:
- Line 211: Update the migration status logic around the applied counter so the
“No outstanding migrations” message is based on whether any unrecorded migration
was encountered, not whether applied remains zero. Track that encounter
separately while processing pending migrations, and preserve the message only
when none were found, including when encountered migrations fail.

In `@tests/python/check_dots.py`:
- Around line 155-157: Update the path validation logic in the check_dots test
around inside and has_glob to expand each glob pattern and validate every
resolved match with inside(root, match), rejecting matches outside source_root.
Preserve the existing existence-check exemption only for patterns with no
matches; literal paths and unmatched globs must retain their current handling.

In `@tests/test_migrations.sh`:
- Around line 49-53: Extend the migration test around run_pending_migrations to
make v26.11.0.sh write a failure marker, then invoke the migration runner again
and assert the order log contains two entries, proving the failed migration is
retried. Also verify v26.11.0 remains absent from the state file after the
second invocation, while preserving the existing check that successful
migrations are not rerun.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 56dcd812-1609-4417-85eb-036db3c6083c

📥 Commits

Reviewing files that changed from the base of the PR and between bab9fcf and 2727b63.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • Scripts/global_fn.sh
  • Scripts/install.sh
  • tests/README.md
  • tests/python/check_dots.py
  • tests/test_migrations.sh

Comment thread Scripts/global_fn.sh Outdated
Comment thread tests/python/check_dots.py
Comment thread tests/test_migrations.sh
@RAprogramm

Copy link
Copy Markdown
Contributor Author

Three follow-ups in 5d42806, from re-reviewing the runner.

Migrations no longer inherit the loop's stdin. sh "$migrationDir/$file" took fd 0 from the while read loop's process substitution, so a migration that reads stdin consumed the names of every migration queued after it — they never ran, were never recorded, and produced no message. The call now redirects from /dev/null. The test covers it: the middle migration of four runs cat >/dev/null, and the two after it still have to run in order.

Honest reporting. The "no outstanding migrations" line was keyed on the count of successes, so a run where a migration was found and failed printed both the failure warning and "no outstanding migrations". It now keys on whether anything was pending, and the test asserts that message cannot appear alongside a pending migration.

Test diagnostics. Sourcing global_fn.sh pulls in its set -e, so a failed cat of the order log aborted the test before its own fail message printed — the suite reported a failure with no reason. That read is now guarded, and the test additionally asserts install.sh actually calls the function, which it did not check before.

Suite: 9 cases, 0 failed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/test_migrations.sh`:
- Around line 66-67: Strengthen the assertion in the migration test around
run_pending_migrations so it verifies an actual invocation from
Scripts/install.sh rather than any matching text. Match the command in an
executable position with appropriate shell syntax, or run the installer using a
stubbed migration runner and assert that the runner is called.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b337e0c5-42e1-415b-bf3f-7c92589f2e80

📥 Commits

Reviewing files that changed from the base of the PR and between 2727b63 and 5d42806.

📒 Files selected for processing (2)
  • Scripts/global_fn.sh
  • tests/test_migrations.sh

Comment thread tests/test_migrations.sh Outdated
@RAprogramm

Copy link
Copy Markdown
Contributor Author

Both test findings addressed.

Failed migrations are asserted to retry. v26.11.0.sh now appends to a marker file before exiting non-zero, and the test requires exactly two entries after two passes — so a change that recorded a failure as applied, or swallowed the retry, fails the test. Previously the second pass only proved the successful ones did not rerun.

The installer check is no longer a substring match. It now requires run_pending_migrations to appear where a command goes, ^[[:space:]]*run_pending_migrations[[:space:]]+, so a mention in a comment or an unrelated string no longer satisfies it.

The first finding — reporting "no outstanding" when every pending migration failed — was already fixed in 5d42806 before this review landed: the message is keyed on whether anything was pending, not on the success count, and the test asserts the two cannot coexist.

Suite: 9 cases, 0 failed.

@kRHYME7

kRHYME7 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

How we handle obsolette migrations ?

@kRHYME7

kRHYME7 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Although this can be solve if we give EOL for some migration scripts (They are archived anyways for those who want to scoure it)

@RAprogramm

Copy link
Copy Markdown
Contributor Author

Rebased onto dev; the only conflict was the changelog. Three things on your question.

Obsolete migrations cost nothing to keep. All four shipped ones are idempotent:

Migration Effect On a rerun
v25.8.2 warns when uwsm is missing, reloads shaders reprints, reloads
v25.9.1 prints the rofi-wayland advice reprints
v26.4.3 reloads hyprlock reloads
v26.7.4 moves superseded scripts aside refuses to overwrite an existing backup, reports it

This matters because the ledger starts empty: on an existing install the first run after this PR replays all four once, then never again. That one-time replay is the price of having a ledger at all, and none of the four does damage on the way through.

EOL is cheap, and the ledger does not fight it. Deleting a migration is safe in both directions — a recorded name whose file is gone simply never matches again, and nothing scans the ledger for orphans. So "keep the last two release lines, drop the rest" needs no code, just git rm. If you want it enforced rather than remembered, say the word and I will add a test that fails when a migration older than the retention window is still shipped.

One defect in this tract, fixed in the last commit. The runner executes every migration with sh, so the shebang decides nothing — and v26.4.3.sh and v26.7.4.sh declared bash. Both happen to be POSIX-clean, so nothing was broken, but a migration written against a bash shebang would run under dash on a non-Arch /bin/sh and fail at the point where recovery is hardest. Both declare sh now, which also puts them under the dialect pass in test_shell, and test_migrations asserts every shipped migration declares sh — checked that it fails when a shebang is flipped back.

Suite: 10 cases, 0 failed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/test_migrations.sh`:
- Around line 80-95: Add an explicit file-existence assertion for
Scripts/migrations/v26.7.4.sh before the migration loop in
tests/test_migrations.sh, using the existing fail mechanism and
repository-relative path style. Keep the loop’s current validation behavior
unchanged for all present migrations.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 83c4ea67-7ec2-4108-be4e-b5369a399ecb

📥 Commits

Reviewing files that changed from the base of the PR and between 8ef07b0 and 1230a9d.

📒 Files selected for processing (3)
  • Scripts/migrations/v26.4.3.sh
  • Scripts/migrations/v26.7.4.sh
  • tests/test_migrations.sh

Comment thread tests/test_migrations.sh
@kRHYME7

kRHYME7 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Looks cool as long as we don't forget to remove obsolete migrations. Also Moving files on migration are fine also as we usually check if they exist before commiting. LGTM

@kRHYME7
kRHYME7 merged commit 8f0b9c4 into HyDE-Project:dev Jul 30, 2026
6 checks passed
kRHYME7 added a commit that referenced this pull request Jul 31, 2026
* feat: add wayle bar support as alternative to waybar

- Add wayle to session.py known bars for clean session management
- Add wallbash hook (wayle.dcol) to sync wallpaper colors with wayle
- Make waybar.dcol conditional: skip waybar update when not running

* dev

* docs: add @0xGeN02 to contributors

* feat: add wayle-bin and matugen-bin as optional packages in pkg_extra.lst

* feat: add wallbash-to-wayle palette bridge for dynamic theming

Uses dcol_* environment variables passed by wallbash's fn_wallbash
to set wayle palette colors on every wallpaper/theme change.
Files placed in .config/hyde/wallbash/ (non-core component).

* fix: hyde-shell pypr subcommand passes args as single string to pypr CLI (#1741)

When running `hyde-shell pypr toggle console`, the `run_pypr()` function
used `${*:-help}` to capture arguments into a scalar variable. When
passed to `pypr "${message[@]}"`, the scalar expands as a single string
"toggle console" instead of two separate args. The pypr client then
normalizes spaces to underscores, looking up "toggle_console" instead of
the "toggle" command with "console" as its argument.

Additionally, socket direct writes via nc/socat/ncat lacked a trailing
newline, which the pyprland daemon's readline() expects.

Fix by using a bash array (`local -a msg=("$@")`) to preserve proper
word-splitting, and adding `\n` to socket writes.

# Pull Request

## Description

Please read these instructions and remove unnecessary text.

- Try to include a summary of the changes and which issue is fixed.
- Also include relevant motivation and context (if applicable).
- Make sure to make PR against dev and not the master
- List any dependencies that are required for this change. (e.g.,
packages or other PRs)
- Provide a link if there is an issue related to this pull request.
e.g., Fixes # (issue)
- Please add Reviewers, Assignees, Labels, Projects, and Milestones to
the PR. (if applicable)

## Type of change

Please put an `x` in the boxes that apply:

- [ ] **Bug fix** (non-breaking change which fixes an issue)
- [ ] **New feature** (non-breaking change which adds functionality)
- [ ] **Breaking change** (fix or feature that would cause existing
functionality to not work as expected)
- [ ] **Documentation update** (non-breaking change; modified files are
limited to the documentations)
- [ ] **Technical debt** (a code change that does not fix a bug or add a
feature but makes something clearer for devs)
- [ ] **Other** (provide details below)

## Checklist

Please put an `x` in the boxes that apply:

- [ ] I have read the
[CONTRIBUTING](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md)
document.
- [ ] My code follows the code style of this project.
- [ ] My commit message follows the [commit
guidelines](https://github.com/HyDE-Project/HyDE/blob/master/COMMIT_MESSAGE_GUIDELINES.md).
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added a changelog entry.
- [ ] I have added necessary comments/documentation to my code.
- [ ] I have added tests to cover my changes.
- [ ] I have tested my code locally and it works as expected.
- [ ] All new and existing tests passed.

## Screenshots

(if appropriate)

## Additional context

Add any other context about the problem here.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Enhanced socket message handling for more reliable and consistent
command argument processing across all operations.
* Improved default command behavior to automatically display helpful
information when commands are executed without any arguments provided.
* Optimized internal message formatting and delivery while maintaining
complete compatibility with existing fallback communication mechanisms
for continued system reliability and operational stability.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/HyDE-Project/HyDE/pull/1741)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* Remove

* fix: Fix Hyprland 0.55 breaking changes in configuration files (#1742)

* fix(hypr):  unset HL_INITIAL_WORKSPACE_TOKEN in startup to prevent apps locking to workspace 1 (#1781)

* docs: sync Chinese README with English version (#1779)

* fix(volume): use [[ ]] for VOLUME_PIPEWIRE_ENABLE comparison (#1786)

The PipeWire detection fallback was written as
`|| $VOLUME_PIPEWIRE_ENABLE == true`, which executes the variable's
value as a command with `==` and `true` as arguments instead of
comparing it. On PulseAudio-only systems (where the pactl grep does
not short-circuit) every invocation printed "==: command not found"
when the variable was unset, and setting it to "true" only worked by
accident of running /usr/bin/true. Wrap the check in [[ ]] so it is
an actual string comparison.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(pm): restore module header position in zypper.py (#1784)

count_updates and list_updates were inserted above the module
docstring and the `from __future__ import annotations` line.
Python requires __future__ imports at the top of the file, so
the module raised SyntaxError on import, breaking `hyde-shell pm`
on openSUSE. Move both functions to the end of the file, matching
the layout of the other manager modules.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* Fix/globalcontrol wallpaper validation (#1785)

* fix(lib): add missing $ to XDG_DATA_HOME fallback path in get_hyprConf

The first fallback config path in get_hyprConf was the literal string
"XDG_DATA_HOME/hyde/hyde.conf", which never exists, so user-level
default theme values in $XDG_DATA_HOME/hyde/hyde.conf were silently
skipped (the grep error is suppressed by 2>/dev/null).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(wallpaper): validate nonexistent path passed to --set

The check used `[ -z "$wallpaper_path" ] && [ ! -f "$wallpaper_path" ]`,
so a non-empty path to a missing file skipped validation entirely and
failed later in get_hashmap with a confusing "No image found in any
source" error. Use || so both empty and nonexistent paths report
"Wallpaper not found" as intended.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(zsh,hyde-shell): prevent PATH duplication on repeated source (#1823)

Co-authored-by: NoistNT <noistnt@users.noreply.github.com>

* Lua (#1755)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Lua (#1835)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

* safe theme lua state generation

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* pr

* waybar: fix `on-scroll` behaviour of `hyprland/workspaces` module with Lua dispatchers (#1850)

* waybar: fix `on-scroll` behaviour

* waybar: add changelog entry

* fix: resolve lua before shell and retire superseded scripts (#1860)

* #1854 fix: resolve lua before shell and retire superseded scripts

* #1854 fix: name migration after the tagged release

* #1854 fix: report migration failures and keep existing backups

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: add `luarocks` to core packages (#1851)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* chore: refresh outdated dependency pins (#1861)

#1856 chore: refresh outdated dependency pins

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* docs: align release version across manifest and changelog (#1862)

#1857 docs: align release version across manifest and changelog

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: expand variables in shader source includes (#1859)

* #1853 fix: expand variables in shader source includes

* #1853 fix: treat empty xdg directory lists as unset

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: adapt other waybar variants for hyprland lua (#1865)

This commit also disables
[tooltip](Alexays/Waybar#3017), it is quite
useless if unconfigured

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1866 fix: deduplicate binds by resolved combo and drop unreachable ones (#1870)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1867 test: add a regression suite and a CI job to run it (#1871)

* #1867 test: add a regression suite and a CI job to run it

* #1867 test: check touchpad gestures alongside keybinds

* fix: add luacheck for linting lua files (#1880)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: resolve Lua migration regressions (#1879)

* fix: resolve Lua migration regressions

Restore the documented HyDE keymap in the Lua configuration, fix the all-monitors screenshot action, and isolate app2unit from unrelated DEBUG values. Add regression coverage for the public shortcuts and app wrapper environment.

* test: address app wrapper review feedback

Apply scoped debug defaults before selecting the systemd or direct execution path. Exercise xdg-terminal-exec without systemd and extend the restored keybinding assertions.

* test: preserve explicit app debug settings

Cover caller-provided APP2UNIT_DEBUG and XTE_DEBUG values in addition to the unrelated DEBUG fallback regression.

* fix: launch Lua battery notifier from schema

Keep generated desktop startup defaults aligned with the Lua implementation installed by the migration. Add regression coverage so removed shell commands cannot return through generated schema artifacts.

* fix: use corrected upstream Grimblast selector

Replace the stale experimental toplevel branch with upstream main, which performs a single slurp selection and avoids combining monitor geometry with window capture. Guard the installer source with the dotfile regression test.

* fix: render Satty previews with GTK GL

Default Satty to the compatible GSK GL renderer when launched from Hyprland while preserving explicit user overrides. Add wrapper regression coverage.

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: provision lua runtime and repair fish activation (#1858)

* #1852 fix: provision lua runtime and repair fish activation

* #1852 fix: unify lua resolution and isolate the runtime fallback

* #1872 fix: drop the legacy dot and repair dangling metafile paths (#1881)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1882 fix: harden the metafile check and exempt remote sources (#1883)

* #1882 fix: harden the metafile check and exempt remote sources

* #1882 fix: validate sources and survive symlink loops

* #1856 chore: refresh Python and Lua dependency pins (#1888)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1875 fix: declare bash in pm.sh and check the sh dialect (#1887)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1891 docs: describe the Lua keybind configuration and add a transition guide (#1892)

* #1891 docs: describe the Lua keybind configuration and add a transition guide

* #1891 docs: qualify the override rule and expand the entry point path

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1889 fix: point shipped callers at files that still exist (#1890)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1885 fix: run every pending migration in version order and record it (#1886)

* #1882 fix: harden the metafile check and exempt remote sources

* #1882 fix: validate sources and survive symlink loops

* #1885 fix: run every pending migration in version order and record it

* #1885 fix: close migration stdin and report pending runs honestly

* #1885 test: assert failed migrations retry and the installer really calls the runner

* #1885 fix: declare sh in the migrations the runner executes with sh

* #1885 test: fail when the migration directory yields nothing to check

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1897 fix: resolve hyde paths without erroring on an unset environment (#1900)

* #1897 fix: resolve hyde paths without erroring on an unset environment

* #1897 test: silence the linter noise in the path case

* #1897 fix: restore the documented path resolver

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1901 fix: quote the shell probe and treat an empty runtime dir as unset (#1902)

* fix: ensure theme config is a table before applying (#1876)

Co-authored-by: Rubin Bhandari <roobin.bhandari@gmail.com>

* ci: add renovate for python dep management (#1903)

requires signup on renovate to add the renovate app

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

---------

Co-authored-by: 0xGeN02 <manuelmateodgl02@gmail.com>
Co-authored-by: kRHYME7 <53417443+kRHYME7@users.noreply.github.com>
Co-authored-by: yun <chenzm39@gmail.com>
Co-authored-by: PureFallen <68307987+PureFallen@users.noreply.github.com>
Co-authored-by: BigDawnGhost <yelouis231589@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Ariel Piazzano <104594670+NoistNT@users.noreply.github.com>
Co-authored-by: NoistNT <noistnt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Ilya Bogdanov <zeerayne1337@gmail.com>
Co-authored-by: RA <70325462+RAprogramm@users.noreply.github.com>
Co-authored-by: Rubin Bhandari <roobin.bhandari@gmail.com>
Co-authored-by: Jared Bautista <dylanjaredbautistasierra03@gmail.com>
Co-authored-by: Maaz Waheed <153950782+42Wor@users.noreply.github.com>
kRHYME7 added a commit that referenced this pull request Jul 31, 2026
* open PR

* chore: Release - dev → rc (#1732)

* feat: add wayle bar support as alternative to waybar

- Add wayle to session.py known bars for clean session management
- Add wallbash hook (wayle.dcol) to sync wallpaper colors with wayle
- Make waybar.dcol conditional: skip waybar update when not running

* dev

* docs: add @0xGeN02 to contributors

* feat: add wayle-bin and matugen-bin as optional packages in pkg_extra.lst

* feat: add wallbash-to-wayle palette bridge for dynamic theming

Uses dcol_* environment variables passed by wallbash's fn_wallbash
to set wayle palette colors on every wallpaper/theme change.
Files placed in .config/hyde/wallbash/ (non-core component).

* fix: hyde-shell pypr subcommand passes args as single string to pypr CLI (#1741)

When running `hyde-shell pypr toggle console`, the `run_pypr()` function
used `${*:-help}` to capture arguments into a scalar variable. When
passed to `pypr "${message[@]}"`, the scalar expands as a single string
"toggle console" instead of two separate args. The pypr client then
normalizes spaces to underscores, looking up "toggle_console" instead of
the "toggle" command with "console" as its argument.

Additionally, socket direct writes via nc/socat/ncat lacked a trailing
newline, which the pyprland daemon's readline() expects.

Fix by using a bash array (`local -a msg=("$@")`) to preserve proper
word-splitting, and adding `\n` to socket writes.

# Pull Request

## Description

Please read these instructions and remove unnecessary text.

- Try to include a summary of the changes and which issue is fixed.
- Also include relevant motivation and context (if applicable).
- Make sure to make PR against dev and not the master
- List any dependencies that are required for this change. (e.g.,
packages or other PRs)
- Provide a link if there is an issue related to this pull request.
e.g., Fixes # (issue)
- Please add Reviewers, Assignees, Labels, Projects, and Milestones to
the PR. (if applicable)

## Type of change

Please put an `x` in the boxes that apply:

- [ ] **Bug fix** (non-breaking change which fixes an issue)
- [ ] **New feature** (non-breaking change which adds functionality)
- [ ] **Breaking change** (fix or feature that would cause existing
functionality to not work as expected)
- [ ] **Documentation update** (non-breaking change; modified files are
limited to the documentations)
- [ ] **Technical debt** (a code change that does not fix a bug or add a
feature but makes something clearer for devs)
- [ ] **Other** (provide details below)

## Checklist

Please put an `x` in the boxes that apply:

- [ ] I have read the
[CONTRIBUTING](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md)
document.
- [ ] My code follows the code style of this project.
- [ ] My commit message follows the [commit
guidelines](https://github.com/HyDE-Project/HyDE/blob/master/COMMIT_MESSAGE_GUIDELINES.md).
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added a changelog entry.
- [ ] I have added necessary comments/documentation to my code.
- [ ] I have added tests to cover my changes.
- [ ] I have tested my code locally and it works as expected.
- [ ] All new and existing tests passed.

## Screenshots

(if appropriate)

## Additional context

Add any other context about the problem here.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Enhanced socket message handling for more reliable and consistent
command argument processing across all operations.
* Improved default command behavior to automatically display helpful
information when commands are executed without any arguments provided.
* Optimized internal message formatting and delivery while maintaining
complete compatibility with existing fallback communication mechanisms
for continued system reliability and operational stability.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/HyDE-Project/HyDE/pull/1741)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* Remove

* fix: Fix Hyprland 0.55 breaking changes in configuration files (#1742)

* fix(hypr):  unset HL_INITIAL_WORKSPACE_TOKEN in startup to prevent apps locking to workspace 1 (#1781)

* docs: sync Chinese README with English version (#1779)

* fix(volume): use [[ ]] for VOLUME_PIPEWIRE_ENABLE comparison (#1786)

The PipeWire detection fallback was written as
`|| $VOLUME_PIPEWIRE_ENABLE == true`, which executes the variable's
value as a command with `==` and `true` as arguments instead of
comparing it. On PulseAudio-only systems (where the pactl grep does
not short-circuit) every invocation printed "==: command not found"
when the variable was unset, and setting it to "true" only worked by
accident of running /usr/bin/true. Wrap the check in [[ ]] so it is
an actual string comparison.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(pm): restore module header position in zypper.py (#1784)

count_updates and list_updates were inserted above the module
docstring and the `from __future__ import annotations` line.
Python requires __future__ imports at the top of the file, so
the module raised SyntaxError on import, breaking `hyde-shell pm`
on openSUSE. Move both functions to the end of the file, matching
the layout of the other manager modules.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* Fix/globalcontrol wallpaper validation (#1785)

* fix(lib): add missing $ to XDG_DATA_HOME fallback path in get_hyprConf

The first fallback config path in get_hyprConf was the literal string
"XDG_DATA_HOME/hyde/hyde.conf", which never exists, so user-level
default theme values in $XDG_DATA_HOME/hyde/hyde.conf were silently
skipped (the grep error is suppressed by 2>/dev/null).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(wallpaper): validate nonexistent path passed to --set

The check used `[ -z "$wallpaper_path" ] && [ ! -f "$wallpaper_path" ]`,
so a non-empty path to a missing file skipped validation entirely and
failed later in get_hashmap with a confusing "No image found in any
source" error. Use || so both empty and nonexistent paths report
"Wallpaper not found" as intended.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(zsh,hyde-shell): prevent PATH duplication on repeated source (#1823)

Co-authored-by: NoistNT <noistnt@users.noreply.github.com>

* Lua (#1755)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: 0xGeN02 <manuelmateodgl02@gmail.com>
Co-authored-by: kRHYME7 <53417443+kRHYME7@users.noreply.github.com>
Co-authored-by: yun <chenzm39@gmail.com>
Co-authored-by: PureFallen <68307987+PureFallen@users.noreply.github.com>
Co-authored-by: BigDawnGhost <yelouis231589@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Ariel Piazzano <104594670+NoistNT@users.noreply.github.com>
Co-authored-by: NoistNT <noistnt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* chore: Release - dev → rc (#1836)

* feat: add wayle bar support as alternative to waybar

- Add wayle to session.py known bars for clean session management
- Add wallbash hook (wayle.dcol) to sync wallpaper colors with wayle
- Make waybar.dcol conditional: skip waybar update when not running

* dev

* docs: add @0xGeN02 to contributors

* feat: add wayle-bin and matugen-bin as optional packages in pkg_extra.lst

* feat: add wallbash-to-wayle palette bridge for dynamic theming

Uses dcol_* environment variables passed by wallbash's fn_wallbash
to set wayle palette colors on every wallpaper/theme change.
Files placed in .config/hyde/wallbash/ (non-core component).

* fix: hyde-shell pypr subcommand passes args as single string to pypr CLI (#1741)

When running `hyde-shell pypr toggle console`, the `run_pypr()` function
used `${*:-help}` to capture arguments into a scalar variable. When
passed to `pypr "${message[@]}"`, the scalar expands as a single string
"toggle console" instead of two separate args. The pypr client then
normalizes spaces to underscores, looking up "toggle_console" instead of
the "toggle" command with "console" as its argument.

Additionally, socket direct writes via nc/socat/ncat lacked a trailing
newline, which the pyprland daemon's readline() expects.

Fix by using a bash array (`local -a msg=("$@")`) to preserve proper
word-splitting, and adding `\n` to socket writes.

# Pull Request

## Description

Please read these instructions and remove unnecessary text.

- Try to include a summary of the changes and which issue is fixed.
- Also include relevant motivation and context (if applicable).
- Make sure to make PR against dev and not the master
- List any dependencies that are required for this change. (e.g.,
packages or other PRs)
- Provide a link if there is an issue related to this pull request.
e.g., Fixes # (issue)
- Please add Reviewers, Assignees, Labels, Projects, and Milestones to
the PR. (if applicable)

## Type of change

Please put an `x` in the boxes that apply:

- [ ] **Bug fix** (non-breaking change which fixes an issue)
- [ ] **New feature** (non-breaking change which adds functionality)
- [ ] **Breaking change** (fix or feature that would cause existing
functionality to not work as expected)
- [ ] **Documentation update** (non-breaking change; modified files are
limited to the documentations)
- [ ] **Technical debt** (a code change that does not fix a bug or add a
feature but makes something clearer for devs)
- [ ] **Other** (provide details below)

## Checklist

Please put an `x` in the boxes that apply:

- [ ] I have read the
[CONTRIBUTING](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md)
document.
- [ ] My code follows the code style of this project.
- [ ] My commit message follows the [commit
guidelines](https://github.com/HyDE-Project/HyDE/blob/master/COMMIT_MESSAGE_GUIDELINES.md).
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added a changelog entry.
- [ ] I have added necessary comments/documentation to my code.
- [ ] I have added tests to cover my changes.
- [ ] I have tested my code locally and it works as expected.
- [ ] All new and existing tests passed.

## Screenshots

(if appropriate)

## Additional context

Add any other context about the problem here.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Enhanced socket message handling for more reliable and consistent
command argument processing across all operations.
* Improved default command behavior to automatically display helpful
information when commands are executed without any arguments provided.
* Optimized internal message formatting and delivery while maintaining
complete compatibility with existing fallback communication mechanisms
for continued system reliability and operational stability.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/HyDE-Project/HyDE/pull/1741)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* Remove

* fix: Fix Hyprland 0.55 breaking changes in configuration files (#1742)

* fix(hypr):  unset HL_INITIAL_WORKSPACE_TOKEN in startup to prevent apps locking to workspace 1 (#1781)

* docs: sync Chinese README with English version (#1779)

* fix(volume): use [[ ]] for VOLUME_PIPEWIRE_ENABLE comparison (#1786)

The PipeWire detection fallback was written as
`|| $VOLUME_PIPEWIRE_ENABLE == true`, which executes the variable's
value as a command with `==` and `true` as arguments instead of
comparing it. On PulseAudio-only systems (where the pactl grep does
not short-circuit) every invocation printed "==: command not found"
when the variable was unset, and setting it to "true" only worked by
accident of running /usr/bin/true. Wrap the check in [[ ]] so it is
an actual string comparison.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(pm): restore module header position in zypper.py (#1784)

count_updates and list_updates were inserted above the module
docstring and the `from __future__ import annotations` line.
Python requires __future__ imports at the top of the file, so
the module raised SyntaxError on import, breaking `hyde-shell pm`
on openSUSE. Move both functions to the end of the file, matching
the layout of the other manager modules.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* Fix/globalcontrol wallpaper validation (#1785)

* fix(lib): add missing $ to XDG_DATA_HOME fallback path in get_hyprConf

The first fallback config path in get_hyprConf was the literal string
"XDG_DATA_HOME/hyde/hyde.conf", which never exists, so user-level
default theme values in $XDG_DATA_HOME/hyde/hyde.conf were silently
skipped (the grep error is suppressed by 2>/dev/null).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(wallpaper): validate nonexistent path passed to --set

The check used `[ -z "$wallpaper_path" ] && [ ! -f "$wallpaper_path" ]`,
so a non-empty path to a missing file skipped validation entirely and
failed later in get_hashmap with a confusing "No image found in any
source" error. Use || so both empty and nonexistent paths report
"Wallpaper not found" as intended.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(zsh,hyde-shell): prevent PATH duplication on repeated source (#1823)

Co-authored-by: NoistNT <noistnt@users.noreply.github.com>

* Lua (#1755)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Lua (#1835)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

* safe theme lua state generation

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: 0xGeN02 <manuelmateodgl02@gmail.com>
Co-authored-by: kRHYME7 <53417443+kRHYME7@users.noreply.github.com>
Co-authored-by: yun <chenzm39@gmail.com>
Co-authored-by: PureFallen <68307987+PureFallen@users.noreply.github.com>
Co-authored-by: BigDawnGhost <yelouis231589@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Ariel Piazzano <104594670+NoistNT@users.noreply.github.com>
Co-authored-by: NoistNT <noistnt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Changelog

* typo

* fix (fonts) cantarell font

* Fix: Ship hyde's wallbash  template
fix [Lua | Bug]: `lua_state.colors` is absent
Fixes #1840

* fix changelog

* fix!  missin lua.dcol

* pr

* chore: Release - dev → rc (#1841)

* feat: add wayle bar support as alternative to waybar

- Add wayle to session.py known bars for clean session management
- Add wallbash hook (wayle.dcol) to sync wallpaper colors with wayle
- Make waybar.dcol conditional: skip waybar update when not running

* dev

* docs: add @0xGeN02 to contributors

* feat: add wayle-bin and matugen-bin as optional packages in pkg_extra.lst

* feat: add wallbash-to-wayle palette bridge for dynamic theming

Uses dcol_* environment variables passed by wallbash's fn_wallbash
to set wayle palette colors on every wallpaper/theme change.
Files placed in .config/hyde/wallbash/ (non-core component).

* fix: hyde-shell pypr subcommand passes args as single string to pypr CLI (#1741)

When running `hyde-shell pypr toggle console`, the `run_pypr()` function
used `${*:-help}` to capture arguments into a scalar variable. When
passed to `pypr "${message[@]}"`, the scalar expands as a single string
"toggle console" instead of two separate args. The pypr client then
normalizes spaces to underscores, looking up "toggle_console" instead of
the "toggle" command with "console" as its argument.

Additionally, socket direct writes via nc/socat/ncat lacked a trailing
newline, which the pyprland daemon's readline() expects.

Fix by using a bash array (`local -a msg=("$@")`) to preserve proper
word-splitting, and adding `\n` to socket writes.

# Pull Request

## Description

Please read these instructions and remove unnecessary text.

- Try to include a summary of the changes and which issue is fixed.
- Also include relevant motivation and context (if applicable).
- Make sure to make PR against dev and not the master
- List any dependencies that are required for this change. (e.g.,
packages or other PRs)
- Provide a link if there is an issue related to this pull request.
e.g., Fixes # (issue)
- Please add Reviewers, Assignees, Labels, Projects, and Milestones to
the PR. (if applicable)

## Type of change

Please put an `x` in the boxes that apply:

- [ ] **Bug fix** (non-breaking change which fixes an issue)
- [ ] **New feature** (non-breaking change which adds functionality)
- [ ] **Breaking change** (fix or feature that would cause existing
functionality to not work as expected)
- [ ] **Documentation update** (non-breaking change; modified files are
limited to the documentations)
- [ ] **Technical debt** (a code change that does not fix a bug or add a
feature but makes something clearer for devs)
- [ ] **Other** (provide details below)

## Checklist

Please put an `x` in the boxes that apply:

- [ ] I have read the
[CONTRIBUTING](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md)
document.
- [ ] My code follows the code style of this project.
- [ ] My commit message follows the [commit
guidelines](https://github.com/HyDE-Project/HyDE/blob/master/COMMIT_MESSAGE_GUIDELINES.md).
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added a changelog entry.
- [ ] I have added necessary comments/documentation to my code.
- [ ] I have added tests to cover my changes.
- [ ] I have tested my code locally and it works as expected.
- [ ] All new and existing tests passed.

## Screenshots

(if appropriate)

## Additional context

Add any other context about the problem here.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Enhanced socket message handling for more reliable and consistent
command argument processing across all operations.
* Improved default command behavior to automatically display helpful
information when commands are executed without any arguments provided.
* Optimized internal message formatting and delivery while maintaining
complete compatibility with existing fallback communication mechanisms
for continued system reliability and operational stability.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/HyDE-Project/HyDE/pull/1741)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* Remove

* fix: Fix Hyprland 0.55 breaking changes in configuration files (#1742)

* fix(hypr):  unset HL_INITIAL_WORKSPACE_TOKEN in startup to prevent apps locking to workspace 1 (#1781)

* docs: sync Chinese README with English version (#1779)

* fix(volume): use [[ ]] for VOLUME_PIPEWIRE_ENABLE comparison (#1786)

The PipeWire detection fallback was written as
`|| $VOLUME_PIPEWIRE_ENABLE == true`, which executes the variable's
value as a command with `==` and `true` as arguments instead of
comparing it. On PulseAudio-only systems (where the pactl grep does
not short-circuit) every invocation printed "==: command not found"
when the variable was unset, and setting it to "true" only worked by
accident of running /usr/bin/true. Wrap the check in [[ ]] so it is
an actual string comparison.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(pm): restore module header position in zypper.py (#1784)

count_updates and list_updates were inserted above the module
docstring and the `from __future__ import annotations` line.
Python requires __future__ imports at the top of the file, so
the module raised SyntaxError on import, breaking `hyde-shell pm`
on openSUSE. Move both functions to the end of the file, matching
the layout of the other manager modules.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* Fix/globalcontrol wallpaper validation (#1785)

* fix(lib): add missing $ to XDG_DATA_HOME fallback path in get_hyprConf

The first fallback config path in get_hyprConf was the literal string
"XDG_DATA_HOME/hyde/hyde.conf", which never exists, so user-level
default theme values in $XDG_DATA_HOME/hyde/hyde.conf were silently
skipped (the grep error is suppressed by 2>/dev/null).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(wallpaper): validate nonexistent path passed to --set

The check used `[ -z "$wallpaper_path" ] && [ ! -f "$wallpaper_path" ]`,
so a non-empty path to a missing file skipped validation entirely and
failed later in get_hashmap with a confusing "No image found in any
source" error. Use || so both empty and nonexistent paths report
"Wallpaper not found" as intended.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(zsh,hyde-shell): prevent PATH duplication on repeated source (#1823)

Co-authored-by: NoistNT <noistnt@users.noreply.github.com>

* Lua (#1755)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Lua (#1835)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

* safe theme lua state generation

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* pr

* waybar: fix `on-scroll` behaviour of `hyprland/workspaces` module with Lua dispatchers (#1850)

* waybar: fix `on-scroll` behaviour

* waybar: add changelog entry

* fix: resolve lua before shell and retire superseded scripts (#1860)

* #1854 fix: resolve lua before shell and retire superseded scripts

* #1854 fix: name migration after the tagged release

* #1854 fix: report migration failures and keep existing backups

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: add `luarocks` to core packages (#1851)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* chore: refresh outdated dependency pins (#1861)

#1856 chore: refresh outdated dependency pins

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* docs: align release version across manifest and changelog (#1862)

#1857 docs: align release version across manifest and changelog

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: expand variables in shader source includes (#1859)

* #1853 fix: expand variables in shader source includes

* #1853 fix: treat empty xdg directory lists as unset

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: adapt other waybar variants for hyprland lua (#1865)

This commit also disables
[tooltip](https://github.com/Alexays/Waybar/pull/3017), it is quite
useless if unconfigured

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1866 fix: deduplicate binds by resolved combo and drop unreachable ones (#1870)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1867 test: add a regression suite and a CI job to run it (#1871)

* #1867 test: add a regression suite and a CI job to run it

* #1867 test: check touchpad gestures alongside keybinds

* fix: add luacheck for linting lua files (#1880)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: resolve Lua migration regressions (#1879)

* fix: resolve Lua migration regressions

Restore the documented HyDE keymap in the Lua configuration, fix the all-monitors screenshot action, and isolate app2unit from unrelated DEBUG values. Add regression coverage for the public shortcuts and app wrapper environment.

* test: address app wrapper review feedback

Apply scoped debug defaults before selecting the systemd or direct execution path. Exercise xdg-terminal-exec without systemd and extend the restored keybinding assertions.

* test: preserve explicit app debug settings

Cover caller-provided APP2UNIT_DEBUG and XTE_DEBUG values in addition to the unrelated DEBUG fallback regression.

* fix: launch Lua battery notifier from schema

Keep generated desktop startup defaults aligned with the Lua implementation installed by the migration. Add regression coverage so removed shell commands cannot return through generated schema artifacts.

* fix: use corrected upstream Grimblast selector

Replace the stale experimental toplevel branch with upstream main, which performs a single slurp selection and avoids combining monitor geometry with window capture. Guard the installer source with the dotfile regression test.

* fix: render Satty previews with GTK GL

Default Satty to the compatible GSK GL renderer when launched from Hyprland while preserving explicit user overrides. Add wrapper regression coverage.

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: provision lua runtime and repair fish activation (#1858)

* #1852 fix: provision lua runtime and repair fish activation

* #1852 fix: unify lua resolution and isolate the runtime fallback

* #1872 fix: drop the legacy dot and repair dangling metafile paths (#1881)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1882 fix: harden the metafile check and exempt remote sources (#1883)

* #1882 fix: harden the metafile check and exempt remote sources

* #1882 fix: validate sources and survive symlink loops

* #1856 chore: refresh Python and Lua dependency pins (#1888)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1875 fix: declare bash in pm.sh and check the sh dialect (#1887)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1891 docs: describe the Lua keybind configuration and add a transition guide (#1892)

* #1891 docs: describe the Lua keybind configuration and add a transition guide

* #1891 docs: qualify the override rule and expand the entry point path

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1889 fix: point shipped callers at files that still exist (#1890)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

---------

Co-authored-by: 0xGeN02 <manuelmateodgl02@gmail.com>
Co-authored-by: kRHYME7 <53417443+kRHYME7@users.noreply.github.com>
Co-authored-by: yun <chenzm39@gmail.com>
Co-authored-by: PureFallen <68307987+PureFallen@users.noreply.github.com>
Co-authored-by: BigDawnGhost <yelouis231589@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Ariel Piazzano <104594670+NoistNT@users.noreply.github.com>
Co-authored-by: NoistNT <noistnt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Ilya Bogdanov <zeerayne1337@gmail.com>
Co-authored-by: RA <70325462+RAprogramm@users.noreply.github.com>
Co-authored-by: Rubin Bhandari <roobin.bhandari@gmail.com>
Co-authored-by: Jared Bautista <dylanjaredbautistasierra03@gmail.com>

* chore: Release - dev → rc (#1899)

* feat: add wayle bar support as alternative to waybar

- Add wayle to session.py known bars for clean session management
- Add wallbash hook (wayle.dcol) to sync wallpaper colors with wayle
- Make waybar.dcol conditional: skip waybar update when not running

* dev

* docs: add @0xGeN02 to contributors

* feat: add wayle-bin and matugen-bin as optional packages in pkg_extra.lst

* feat: add wallbash-to-wayle palette bridge for dynamic theming

Uses dcol_* environment variables passed by wallbash's fn_wallbash
to set wayle palette colors on every wallpaper/theme change.
Files placed in .config/hyde/wallbash/ (non-core component).

* fix: hyde-shell pypr subcommand passes args as single string to pypr CLI (#1741)

When running `hyde-shell pypr toggle console`, the `run_pypr()` function
used `${*:-help}` to capture arguments into a scalar variable. When
passed to `pypr "${message[@]}"`, the scalar expands as a single string
"toggle console" instead of two separate args. The pypr client then
normalizes spaces to underscores, looking up "toggle_console" instead of
the "toggle" command with "console" as its argument.

Additionally, socket direct writes via nc/socat/ncat lacked a trailing
newline, which the pyprland daemon's readline() expects.

Fix by using a bash array (`local -a msg=("$@")`) to preserve proper
word-splitting, and adding `\n` to socket writes.

# Pull Request

## Description

Please read these instructions and remove unnecessary text.

- Try to include a summary of the changes and which issue is fixed.
- Also include relevant motivation and context (if applicable).
- Make sure to make PR against dev and not the master
- List any dependencies that are required for this change. (e.g.,
packages or other PRs)
- Provide a link if there is an issue related to this pull request.
e.g., Fixes # (issue)
- Please add Reviewers, Assignees, Labels, Projects, and Milestones to
the PR. (if applicable)

## Type of change

Please put an `x` in the boxes that apply:

- [ ] **Bug fix** (non-breaking change which fixes an issue)
- [ ] **New feature** (non-breaking change which adds functionality)
- [ ] **Breaking change** (fix or feature that would cause existing
functionality to not work as expected)
- [ ] **Documentation update** (non-breaking change; modified files are
limited to the documentations)
- [ ] **Technical debt** (a code change that does not fix a bug or add a
feature but makes something clearer for devs)
- [ ] **Other** (provide details below)

## Checklist

Please put an `x` in the boxes that apply:

- [ ] I have read the
[CONTRIBUTING](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md)
document.
- [ ] My code follows the code style of this project.
- [ ] My commit message follows the [commit
guidelines](https://github.com/HyDE-Project/HyDE/blob/master/COMMIT_MESSAGE_GUIDELINES.md).
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added a changelog entry.
- [ ] I have added necessary comments/documentation to my code.
- [ ] I have added tests to cover my changes.
- [ ] I have tested my code locally and it works as expected.
- [ ] All new and existing tests passed.

## Screenshots

(if appropriate)

## Additional context

Add any other context about the problem here.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Enhanced socket message handling for more reliable and consistent
command argument processing across all operations.
* Improved default command behavior to automatically display helpful
information when commands are executed without any arguments provided.
* Optimized internal message formatting and delivery while maintaining
complete compatibility with existing fallback communication mechanisms
for continued system reliability and operational stability.

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/HyDE-Project/HyDE/pull/1741)

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* Remove

* fix: Fix Hyprland 0.55 breaking changes in configuration files (#1742)

* fix(hypr):  unset HL_INITIAL_WORKSPACE_TOKEN in startup to prevent apps locking to workspace 1 (#1781)

* docs: sync Chinese README with English version (#1779)

* fix(volume): use [[ ]] for VOLUME_PIPEWIRE_ENABLE comparison (#1786)

The PipeWire detection fallback was written as
`|| $VOLUME_PIPEWIRE_ENABLE == true`, which executes the variable's
value as a command with `==` and `true` as arguments instead of
comparing it. On PulseAudio-only systems (where the pactl grep does
not short-circuit) every invocation printed "==: command not found"
when the variable was unset, and setting it to "true" only worked by
accident of running /usr/bin/true. Wrap the check in [[ ]] so it is
an actual string comparison.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(pm): restore module header position in zypper.py (#1784)

count_updates and list_updates were inserted above the module
docstring and the `from __future__ import annotations` line.
Python requires __future__ imports at the top of the file, so
the module raised SyntaxError on import, breaking `hyde-shell pm`
on openSUSE. Move both functions to the end of the file, matching
the layout of the other manager modules.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* Fix/globalcontrol wallpaper validation (#1785)

* fix(lib): add missing $ to XDG_DATA_HOME fallback path in get_hyprConf

The first fallback config path in get_hyprConf was the literal string
"XDG_DATA_HOME/hyde/hyde.conf", which never exists, so user-level
default theme values in $XDG_DATA_HOME/hyde/hyde.conf were silently
skipped (the grep error is suppressed by 2>/dev/null).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(wallpaper): validate nonexistent path passed to --set

The check used `[ -z "$wallpaper_path" ] && [ ! -f "$wallpaper_path" ]`,
so a non-empty path to a missing file skipped validation entirely and
failed later in get_hashmap with a confusing "No image found in any
source" error. Use || so both empty and nonexistent paths report
"Wallpaper not found" as intended.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix(zsh,hyde-shell): prevent PATH duplication on repeated source (#1823)

Co-authored-by: NoistNT <noistnt@users.noreply.github.com>

* Lua (#1755)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Lua (#1835)

* lua

* Added lua configs

* Added lua support for Scripts

* [for testing ] Added deez dots manifest files

* [for testing ] Added deez dots manifest files

* some migration logic for zsh

* Added the partial deps list

* Removed old hyprlang.

* added defualt blnk hyprland.lua

* Added hyprland error when wallbash for hyprland is not yet generated

* Added hyprland error when wallbash for hyprland is not yet generated

* Clean up all deprecated scripts

* fixing session management logic for newer hyprland

* reload on  on common --reload and  better keb hint UX  and alt tab behavior

* altab implementation and better binds handling

* fix hyprlock

* fix dolphin

* fix dolphin

* move kdeglobals to hyde bundle

* cleanup

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* anim

* fix batteerynotify  dameon

* resolves some issues

* no anim on selection  layer

* exposes  hyprland.anim.duration_scale for animation speed(duration) control

* Silent fail when missing toml parser

* fix altab

* fix altab

* y

* app2unit wrapper for non systemd

* kitty

* some adjustments

* added pm agnostic system update ui

* cleanup

* fix sys update

* pm

* fix: gobject theming

* Fix waybar, move dconf to use lua lgi

* make keepass and bitwarden float

* some foundation for i18n , docs etc for scripts

* todo

* fix screenshot conflict

* org

* some handling on fresh install

* almost

* Update Configs/.local/bin/hyde-shell

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/luautils/selector/rofi.lua

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/keybinds_hint.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/compositor/hyprland.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/session/plugins/brave.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update Configs/.local/lib/hyde/shell/activate.fish

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix shell activations

* uwsm hyprland env

* fix session hyprland compositor

* fix luau hyprtils  rofi helper

* fix no regex alternation on lua.

* fix lua runtime

* fix json output on lua

* fix list builtin in completions

* safe theme lua state generation

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* pr

* waybar: fix `on-scroll` behaviour of `hyprland/workspaces` module with Lua dispatchers (#1850)

* waybar: fix `on-scroll` behaviour

* waybar: add changelog entry

* fix: resolve lua before shell and retire superseded scripts (#1860)

* #1854 fix: resolve lua before shell and retire superseded scripts

* #1854 fix: name migration after the tagged release

* #1854 fix: report migration failures and keep existing backups

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: add `luarocks` to core packages (#1851)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* chore: refresh outdated dependency pins (#1861)

#1856 chore: refresh outdated dependency pins

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* docs: align release version across manifest and changelog (#1862)

#1857 docs: align release version across manifest and changelog

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: expand variables in shader source includes (#1859)

* #1853 fix: expand variables in shader source includes

* #1853 fix: treat empty xdg directory lists as unset

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: adapt other waybar variants for hyprland lua (#1865)

This commit also disables
[tooltip](https://github.com/Alexays/Waybar/pull/3017), it is quite
useless if unconfigured

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1866 fix: deduplicate binds by resolved combo and drop unreachable ones (#1870)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1867 test: add a regression suite and a CI job to run it (#1871)

* #1867 test: add a regression suite and a CI job to run it

* #1867 test: check touchpad gestures alongside keybinds

* fix: add luacheck for linting lua files (#1880)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: resolve Lua migration regressions (#1879)

* fix: resolve Lua migration regressions

Restore the documented HyDE keymap in the Lua configuration, fix the all-monitors screenshot action, and isolate app2unit from unrelated DEBUG values. Add regression coverage for the public shortcuts and app wrapper environment.

* test: address app wrapper review feedback

Apply scoped debug defaults before selecting the systemd or direct execution path. Exercise xdg-terminal-exec without systemd and extend the restored keybinding assertions.

* test: preserve explicit app debug settings

Cover caller-provided APP2UNIT_DEBUG and XTE_DEBUG values in addition to the unrelated DEBUG fallback regression.

* fix: launch Lua battery notifier from schema

Keep generated desktop startup defaults aligned with the Lua implementation installed by the migration. Add regression coverage so removed shell commands cannot return through generated schema artifacts.

* fix: use corrected upstream Grimblast selector

Replace the stale experimental toplevel branch with upstream main, which performs a single slurp selection and avoids combining monitor geometry with window capture. Guard the installer source with the dotfile regression test.

* fix: render Satty previews with GTK GL

Default Satty to the compatible GSK GL renderer when launched from Hyprland while preserving explicit user overrides. Add wrapper regression coverage.

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* fix: provision lua runtime and repair fish activation (#1858)

* #1852 fix: provision lua runtime and repair fish activation

* #1852 fix: unify lua resolution and isolate the runtime fallback

* #1872 fix: drop the legacy dot and repair dangling metafile paths (#1881)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1882 fix: harden the metafile check and exempt remote sources (#1883)

* #1882 fix: harden the metafile check and exempt remote sources

* #1882 fix: validate sources and survive symlink loops

* #1856 chore: refresh Python and Lua dependency pins (#1888)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1875 fix: declare bash in pm.sh and check the sh dialect (#1887)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1891 docs: describe the Lua keybind configuration and add a transition guide (#1892)

* #1891 docs: describe the Lua keybind configuration and add a transition guide

* #1891 docs: qualify the override rule and expand the entry point path

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1889 fix: point shipped callers at files that still exist (#1890)

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1885 fix: run every pending migration in version order and record it (#1886)

* #1882 fix: harden the metafile check and exempt remote sources

* #1882 fix: validate sources and survive symlink loops

* #1885 fix: run every pending migration in version order and record it

* #1885 fix: close migration stdin and report pending runs honestly

* #1885 test: assert failed migrations retry and the installer really calls the runner

* #1885 fix: declare sh in the migrations the runner executes with sh

* #1885 test: fail when the migration directory yields nothing to check

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1897 fix: resolve hyde paths without erroring on an unset environment (#1900)

* #1897 fix: resolve hyde paths without erroring on an unset environment

* #1897 test: silence the linter noise in the path case

* #1897 fix: restore the documented path resolver

---------

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

* #1901 fix: quote the shell probe and treat an empty runtime dir as unset (#1902)

* fix: ensure theme config is a table before applying (#1876)

Co-authored-by: Rubin Bhandari <roobin.bhandari@gmail.com>

* ci: add renovate for python dep management (#1903)

requires signup on renovate to add the renovate app

Co-authored-by: Khing <53417443+kRHYME7@users.noreply.github.com>

---------

Co-authored-by: 0xGeN02 <manuelmateodgl02@gmail.com>
Co-authored-by: kRHYME7 <53417443+kRHYME7@users.noreply.github.com>
Co-authored-by: yun <chenzm39@gmail.com>
Co-authored-by: PureFallen <68307987+PureFallen@users.noreply.github.com>
Co-authored-by: BigDawnGhost <yelouis231589@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Ariel Piazzano <104594670+NoistNT@users.noreply.github.com>
Co-authored-by: NoistNT <noistnt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Ilya Bogdanov <zeerayne1337@gmail.com>
Co-authored-by: RA <70325462+RAprogramm@users.noreply.github.com>
Co-authored-by: Rubin Bhandari <roobin.bhandari@gmail.com>
Co-authored-by: Jared Bautista <dylanjaredbautistasierra03@gmail.com>
Co-authored-by: Maaz Waheed <153950782+42Wor@users.noreply.github.com>

---------

Co-authored-by: kRHYME7 <53417443+kRHYME7@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: 0xGeN02 <manuelmateodgl02@gmail.com>
Co-authored-by: yun <chenzm39@gmail.com>
Co-authored-by: PureFallen <68307987+PureFallen@users.noreply.github.com>
Co-authored-by: BigDawnGhost <yelouis231589@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Ariel Piazzano <104594670+NoistNT@users.noreply.github.com>
Co-authored-by: NoistNT <noistnt@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Ilya Bogdanov <zeerayne1337@gmail.com>
Co-authored-by: RA <70325462+RAprogramm@users.noreply.github.com>
Co-authored-by: Rubin Bhandari <roobin.bhandari@gmail.com>
Co-authored-by: Jared Bautista <dylanjaredbautistasierra03@gmail.com>
Co-authored-by: Maaz Waheed <153950782+42Wor@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants